In dieser Phase sammeln wir Informationen über das Zielsystem, um potenzielle Schwachstellen zu identifizieren.
ARP-Scan identifiziert die IP-Adresse 192.168.2.123 und die zugehörige MAC-Adresse. Der Hersteller der Netzwerkkarte ist PCS Systemtechnik GmbH. Diese Information kann nützlich sein, um das Betriebssystem oder die Art des Geräts zu bestimmen.
Der Eintrag in der `/etc/hosts`-Datei weist darauf hin, dass die IP-Adresse 192.168.2.123 dem Hostnamen connectdots.vln zugeordnet ist. Dies ermöglicht uns, den Hostnamen anstelle der IP-Adresse zu verwenden.
Dieser Nmap-Scan liefert detaillierte Informationen über die offenen Ports, die laufenden Dienste und die Versionen der Software auf dem Zielsystem. Die Ergebnisse zeigen, dass FTP (Port 21), HTTP (Port 80), RPCbind (Port 111), NFS (Port 2049) und SSH (Port 7822) laufen. Besonders interessant ist der NFS-Dienst, da er potenziell für den Zugriff auf Dateien genutzt werden kann. SSH läuft auf einem ungewöhnlichen Port (7822), was auf eine benutzerdefinierte Konfiguration hindeuten könnte. Die identifizierten Softwareversionen (z.B. vsftpd 2.0.8, Apache httpd 2.4.38, OpenSSH 7.9p1) können auf bekannte Schwachstellen überprüft werden.
Empfehlung: Es ist ratsam, die Software auf dem Zielsystem auf die neuesten Versionen zu aktualisieren, um bekannte Schwachstellen zu beheben. Zusätzlich sollten unnötige Dienste deaktiviert und die Konfiguration der verbleibenden Dienste gehärtet werden, um die Angriffsfläche zu reduzieren.
In dieser Phase untersuchen wir die Webanwendungen auf dem Zielsystem genauer, um potenzielle Schwachstellen zu identifizieren.
Nikto identifiziert verschiedene potenzielle Schwachstellen, darunter fehlende Clickjacking- und Content-Type-ptions-Header, die Offenlegung interner IP-Adressen, die Möglichkeit des Inode-Leakings über ETags, eine veraltete Apache-Version und Directory Indexing. Besonders interessant ist der Hinweis auf die Datei `/hits.txt`, da diese möglicherweise weitere Informationen über das System enthält. Das Vorhandensein des Apache-Manuals und Directory Indexing in `/manual/images/` und `/images/` kann Angreifern helfen, Informationen über das System zu sammeln.
Empfehlung: Die fehlenden Header sollten hinzugefügt, Directory Indexing deaktiviert und die Apache-Version aktualisiert werden. Der Zugriff auf das Apache-Manual sollte eingeschränkt werden.
Gobuster entdeckt verschiedene interessante Dateien und Verzeichnisse, darunter `/index.html`, `/images`, `/manual`, `/javascript`, `/hits.txt`, `/backups`, `/backups.html` und `/mysite`. Die Dateien `/backups` und `/backups.html` könnten sensible Informationen enthalten. Das Vorhandensein eines `/mysite`-Verzeichnisses deutet auf eine persönliche Website oder einen Testbereich hin, der möglicherweise Schwachstellen enthält.
Der Inhalt von `/hits.txt` ist eine Erinnerung, die Enumeration fortzusetzen. Dies deutet darauf hin, dass weitere Schwachstellen vorhanden sein könnten.
In dieser Phase versuchen wir, uns Zugriff auf das System zu verschaffen, indem wir die identifizierten Schwachstellen ausnutzen.
`showmount -e` zeigt, dass das `/home/morris`-Verzeichnis über NFS für alle Hosts freigegeben ist (`*`). Dies ist eine potenzielle Schwachstelle, da wir versuchen können, dieses Verzeichnis auf unserem System zu mounten und auf die darin enthaltenen Dateien zuzugreifen.
Empfehlung: NFS-Freigaben sollten auf bestimmte Hosts beschränkt werden, um unbefugten Zugriff zu verhindern. Die Freigabe für alle Hosts (`*`) ist eine unsichere Konfiguration.
Wir erstellen das Verzeichnis `/mnt/new_back`, um das NFS-Share dort zu mounten.
Wir verwenden den `mount`-Befehl, um das NFS-Share `/home/morris` von 192.168.2.123 in unser lokales Verzeichnis `/mnt/new_back` zu mounten. Die Option `-o nolock` deaktiviert das Locking, was in einigen Fällen erforderlich sein kann, um das Mounten zu ermöglichen.
Nach dem Mounten überprüfen wir den Inhalt des Verzeichnisses `/mnt/new_back`. Wir sehen das Verzeichnis `Templates`, das dem Benutzer `ccat` gehört.
Wir navigieren in das gemountete Verzeichnis `/mnt/new_back` und listen dessen Inhalt auf. Wir sehen verschiedene Dateien und Verzeichnisse, die dem Benutzer `ccat` gehören.
`df -k` bestätigt, dass das NFS-Share erfolgreich gemountet wurde und fast voll ist.
Der Zugriff auf `/mysite/` zeigt eine Liste von Dateien, darunter CSS- und JavaScript-Dateien sowie `register.html`. Dies deutet auf eine einfache Registrierungsseite hin.
Der Zugriff auf `bootstrap.min.cs` zeigt JSfuck-Code. JSfuck ist eine obskure Art, JavaScript-Code zu schreiben, die nur aus sechs Zeichen besteht: `[]()!+`.
Analyse des JSfuck-Codes: JSfuck-Code ist schwer zu lesen und zu verstehen. Wir verwenden ein Online-Tool wie [https://www.dcode.fr/jsfuck-language](https://www.dcode.fr/jsfuck-language) um den Code zu deobfuskieren.
Nach der Deobfuskierung erhalten wir den Klartext: `alert("You're smart enough to understand me. Here's your secret, TryToGuessThisNorris@2k19")`. Dies deutet auf ein Passwort `TryToGuessThisNorris@2k19` für den Benutzer `norris` hin. Fantastisch, wir haben einen wichtigen Erfolg erzielt!
Nachdem wir den Benutzernamen und das Passwort für `norris` erhalten haben, versuchen wir, uns über SSH anzumelden.
Wir versuchen, uns über SSH mit dem Benutzernamen `norris` und dem Passwort `TryToGuessThisNorris@2k19` am Port 7822 anzumelden. Wir bestätigen den SSH-Fingerabdruck und fügen den Host zur Liste der bekannten Hosts hinzu.
Die SSH-Anmeldung ist erfolgreich! Wir sind jetzt als Benutzer `norris` auf dem System angemeldet.
Wir überprüfen, ob der Benutzer `norris` Sudo-Rechte hat. Leider darf `norris` keine Befehle mit Sudo ausführen.
Um unsere persistenz zu sichern, ändern wir das Passwort des Benutzers `norris` in `benni12`.
Wir suchen nach SUID-Binaries, die von Root ausgeführt werden können. Dies könnte uns helfen, unsere Privilegien zu erhöhen.
Analyse der SUID-Binaries: SUID-Binaries sind ausführbare Dateien, die mit den Rechten des Besitzers (in diesem Fall Root) ausgeführt werden, unabhängig davon, welcher Benutzer sie ausführt. Dies kann ausgenutzt werden, um die Privilegien zu erhöhen, wenn diese Binaries unsicher sind.
Wir überprüfen, ob `curl` installiert ist, um Dateien herunterzuladen. Es ist nicht vorhanden.
`which curl` bestätigt, dass `curl` nicht im Pfad ist.
Wir überprüfen, ob `nc` (Netcat) installiert ist, eine Alternative zu `curl` für die Dateiübertragung. Es ist vorhanden.
Wir versuchen, `pkexec` auszunutzen, um eine Shell als Root zu starten. `pkexec` ist ein SUID-Binary, das es autorisierten Benutzern ermöglicht, Befehle mit Root-Rechten auszuführen.
Die Authentifizierung ist erforderlich, um `/bin/sh` als Superuser auszuführen. Wir geben das Passwort für den Benutzer `norris` ein (benni12).
Wir listen die Dateien im Home-Verzeichnis von `norris` auf, um weitere Informationen zu sammeln. Wir sehen die Datei `user.txt`, die wahrscheinlich die User-Flag enthält.
Wir lesen den Inhalt der Datei `user.txt` und erhalten die User-Flag: `2c2836a138c0e7f7529aa0764a6414d0`.
Wir wechseln in das `/ftp/files`-Verzeichnis und listen dessen Inhalt auf. Wir sehen verschiedene `.bak`-Dateien.
Wir überprüfen den Dateityp von `backups.bak`. Es handelt sich um eine IS Media-Datei.
Wir überprüfen, ob Python installiert ist. Es ist vorhanden.
Wir starten einen einfachen HTTP-Server mit Python, um die Datei `backups.bak` herunterzuladen.
Wir laden die Datei `backups.bak` auf unser lokales System herunter.
In dieser Phase versuchen wir, unsere Privilegien auf Root zu erhöhen.
Wir suchen nach Binaries mit gesetzten Capabilities. Capabilities sind feingranulare Berechtigungen, die an einzelne ausführbare Dateien vergeben werden können. Wir finden, dass `/usr/bin/tar` die Capability `cap_dac_read_search+ep` hat. Dies bedeutet, dass `tar` Dateien lesen kann, auch wenn der Benutzer keine Berechtigung hat.
Ausnutzung von Tar mit Capabilities: Wir können `tar` verwenden, um die Root-Flag aus der Datei `/root/root.txt` zu extrahieren, auch wenn wir keine Root-Rechte haben.
Zuerst erstellen wir ein Verzeichnis `/tmp/etc`, in dem wir die extrahierte Datei speichern werden.
Wir erstellen ein Tar-Archiv `root_txt.tar`, das die Datei `/root/root.txt` enthält. Die Meldung "Removing leading '/'" ist normal und bedeutet, dass der Pfad relativ zum Root-Verzeichnis gespeichert wird.
Nun extrahieren wir den Inhalt von `root_txt.tar` in das Verzeichnis `/tmp/etc` mit dem Befehl `tar -xvf root_txt.tar -C etc`.
Wir lesen den Inhalt der Datei `/tmp/etc/root/root.txt` und erhalten die Root-Flag: `8fc9376d961670ca10be270d52eda423`.
Fantastisch, die Privilege Escalation war erfolgreich! Wir haben unser Ziel erreicht und die Root-Flag erhalten.